home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / PROGRAMR / GSRC208A.ZIP / TOOLHELP.H < prev    next >
C/C++ Source or Header  |  1993-02-08  |  15KB  |  470 lines

  1. /*****************************************************************************\
  2. *                                                                             *
  3. * toolhelp.h -  toolhelp.dll functions, types, and definitions                *
  4. *                                                                             *
  5. *               Version 1.0                                                   *
  6. *                                                                             *
  7. *               NOTE: windows.h must be #included first                       *
  8. *                                                                             *
  9. *               Copyright (c) 1992, Microsoft Corp.  All rights reserved.     *
  10. *                                                                             *
  11. \*****************************************************************************/
  12.  
  13. #ifndef _INC_TOOLHELP
  14. #define _INC_TOOLHELP
  15.  
  16. #ifndef RC_INVOKED
  17. #pragma pack(1)         /* Assume byte packing throughout */
  18. #endif
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {            /* Assume C declarations for C++ */
  22. #endif    /* __cplusplus */
  23.  
  24. #ifndef _INC_WINDOWS    /* If included with 3.0 headers... */
  25. #define LPCSTR      LPSTR
  26. #define WINAPI      FAR PASCAL
  27. #define CALLBACK    FAR PASCAL
  28. #define UINT        WORD
  29. #define HMODULE     HANDLE
  30. #define HINSTANCE   HANDLE
  31. #define HLOCAL      HANDLE
  32. #define HGLOBAL     HANDLE
  33. #define HTASK       HANDLE
  34. #endif  /* _INC_WINDOWS */
  35.  
  36. /****** General symbols ******************************************************/
  37. #define MAX_DATA        11
  38. #define MAX_PATH        255
  39. #define MAX_MODULE_NAME 8 + 1
  40. #define MAX_CLASSNAME   255
  41.  
  42. /****** Global heap walking ***************************************************/
  43. typedef struct tagGLOBALINFO
  44. {
  45.     DWORD dwSize;
  46.     WORD wcItems;
  47.     WORD wcItemsFree;
  48.     WORD wcItemsLRU;
  49. } GLOBALINFO;
  50.  
  51. typedef struct tagGLOBALENTRY
  52. {
  53.     DWORD dwSize;
  54.     DWORD dwAddress;
  55.     DWORD dwBlockSize;
  56.     HGLOBAL hBlock;
  57.     WORD wcLock;
  58.     WORD wcPageLock;
  59.     WORD wFlags;
  60.     BOOL wHeapPresent;
  61.     HGLOBAL hOwner;
  62.     WORD wType;
  63.     WORD wData;
  64.     DWORD dwNext;
  65.     DWORD dwNextAlt;
  66. } GLOBALENTRY;
  67.  
  68. /* GlobalFirst()/GlobalNext() flags */
  69. #define GLOBAL_ALL      0
  70. #define GLOBAL_LRU      1
  71. #define GLOBAL_FREE     2
  72.  
  73. /* GLOBALENTRY.wType entries */
  74. #define GT_UNKNOWN      0
  75. #define GT_DGROUP       1
  76. #define GT_DATA         2
  77. #define GT_CODE         3
  78. #define GT_TASK         4
  79. #define GT_RESOURCE     5
  80. #define GT_MODULE       6
  81. #define GT_FREE         7
  82. #define GT_INTERNAL     8
  83. #define GT_SENTINEL     9
  84. #define GT_BURGERMASTER 10
  85.  
  86. /* If GLOBALENTRY.wType==GT_RESOURCE, the following is GLOBALENTRY.wData: */
  87. #define GD_USERDEFINED      0
  88. #define GD_CURSORCOMPONENT  1
  89. #define GD_BITMAP           2
  90. #define GD_ICONCOMPONENT    3
  91. #define GD_MENU             4
  92. #define GD_DIALOG           5
  93. #define GD_STRING           6
  94. #define GD_FONTDIR          7
  95. #define GD_FONT             8
  96. #define GD_ACCELERATORS     9
  97. #define GD_RCDATA           10
  98. #define GD_ERRTABLE         11
  99. #define GD_CURSOR           12
  100. #define GD_ICON             14
  101. #define GD_NAMETABLE        15
  102. #define GD_MAX_RESOURCE     15
  103.  
  104. /* GLOBALENTRY.wFlags */
  105. #define GF_PDB_OWNER        0x0100      /* Low byte is KERNEL flags */
  106.  
  107. BOOL    WINAPI GlobalInfo(GLOBALINFO FAR* lpGlobalInfo);
  108. BOOL    WINAPI GlobalFirst(GLOBALENTRY FAR* lpGlobal, WORD wFlags);
  109. BOOL    WINAPI GlobalNext(GLOBALENTRY FAR* lpGlobal, WORD wFlags);
  110. BOOL    WINAPI GlobalEntryHandle(GLOBALENTRY FAR* lpGlobal, HGLOBAL hItem);
  111. BOOL    WINAPI GlobalEntryModule(GLOBALENTRY FAR* lpGlobal, HMODULE hModule, WORD wSeg);
  112. WORD    WINAPI GlobalHandleToSel(HGLOBAL hMem);
  113.  
  114. /****** Local heap walking ***************************************************/
  115.  
  116. typedef struct tagLOCALINFO
  117. {
  118.     DWORD dwSize;
  119.     WORD wcItems;
  120. } LOCALINFO;
  121.  
  122. typedef struct tagLOCALENTRY
  123. {
  124.     DWORD dwSize;
  125.     HLOCAL hHandle;
  126.     WORD wAddress;
  127.     WORD wSize;
  128.     WORD wFlags;
  129.     WORD wcLock;
  130.     WORD wType;
  131.     WORD hHeap;
  132.     WORD wHeapType;
  133.     WORD wNext;
  134. } LOCALENTRY;
  135.  
  136. /* LOCALENTRY.wHeapType flags */
  137. #define NORMAL_HEAP     0
  138. #define USER_HEAP       1
  139. #define GDI_HEAP        2
  140.  
  141. /* LOCALENTRY.wFlags */
  142. #define LF_FIXED        1
  143. #define LF_FREE         2
  144. #define LF_MOVEABLE     4
  145.  
  146. /* LOCALENTRY.wType */
  147. #define LT_NORMAL                   0
  148. #define LT_FREE                     0xff
  149. #define LT_GDI_PEN                  1   /* LT_GDI_* is for GDI's heap */
  150. #define LT_GDI_BRUSH                2
  151. #define LT_GDI_FONT                 3
  152. #define LT_GDI_PALETTE              4
  153. #define LT_GDI_BITMAP               5
  154. #define LT_GDI_RGN                  6
  155. #define LT_GDI_DC                   7
  156. #define LT_GDI_DISABLED_DC          8
  157. #define LT_GDI_METADC               9
  158. #define LT_GDI_METAFILE             10
  159. #define LT_GDI_MAX                  LT_GDI_METAFILE
  160. #define LT_USER_CLASS               1   /* LT_USER_* is for USER's heap */
  161. #define LT_USER_WND                 2
  162. #define LT_USER_STRING              3
  163. #define LT_USER_MENU                4
  164. #define LT_USER_CLIP                5
  165. #define LT_USER_CBOX                6
  166. #define LT_USER_PALETTE             7
  167. #define LT_USER_ED                  8
  168. #define LT_USER_BWL                 9
  169. #define LT_USER_OWNERDRAW           10
  170. #define LT_USER_SPB                 11
  171. #define LT_USER_CHECKPOINT          12
  172. #define LT_USER_DCE                 13
  173. #define LT_USER_MWP                 14
  174. #define LT_USER_PROP                15
  175. #define LT_USER_LBIV                16
  176. #define LT_USER_MISC                17
  177. #define LT_USER_ATOMS               18
  178. #define LT_USER_LOCKINPUTSTATE      19
  179. #define LT_USER_HOOKLIST            20
  180. #define LT_USER_USERSEEUSERDOALLOC  21
  181. #define LT_USER_HOTKEYLIST          22
  182. #define LT_USER_POPUPMENU           23
  183. #define LT_USER_HANDLETABLE         32
  184. #define LT_USER_MAX                 LT_USER_HANDLETABLE
  185.  
  186. BOOL    WINAPI LocalInfo(LOCALINFO FAR* lpLocal, HGLOBAL hHeap);
  187. BOOL    WINAPI LocalFirst(LOCALENTRY FAR* lpLocal, HGLOBAL hHeap);
  188. BOOL    WINAPI LocalNext(LOCALENTRY FAR* lpLocal);
  189.  
  190. /****** Stack Tracing ********************************************************/
  191.  
  192. typedef struct tagSTACKTRACEENTRY
  193. {
  194.     DWORD dwSize;
  195.     HTASK hTask;
  196.     WORD wSS;
  197.     WORD wBP;
  198.     WORD wCS;
  199.     WORD wIP;
  200.     HMODULE hModule;
  201.     WORD wSegment;
  202.     WORD wFlags;
  203. } STACKTRACEENTRY;
  204.  
  205. /* STACKTRACEENTRY.wFlags values */
  206. #define FRAME_FAR       0
  207. #define FRAME_NEAR      1
  208.  
  209. BOOL    WINAPI StackTraceFirst(STACKTRACEENTRY FAR* lpStackTrace, HTASK hTask);
  210. BOOL    WINAPI StackTraceCSIPFirst(STACKTRACEENTRY FAR* lpStackTrace,
  211.             WORD wSS, WORD wCS, WORD wIP, WORD wBP);
  212. BOOL    WINAPI StackTraceNext(STACKTRACEENTRY FAR* lpStackTrace);
  213.  
  214. /****** Module list walking **************************************************/
  215.  
  216. typedef struct tagMODULEENTRY
  217. {
  218.     DWORD dwSize;
  219.     char szModule[MAX_MODULE_NAME + 1];
  220.     HMODULE hModule;
  221.     WORD wcUsage;
  222.     char szExePath[MAX_PATH + 1];
  223.     WORD wNext;
  224. } MODULEENTRY;
  225.  
  226. BOOL    WINAPI ModuleFirst(MODULEENTRY FAR* lpModule);
  227. BOOL    WINAPI ModuleNext(MODULEENTRY FAR* lpModule);
  228. HMODULE WINAPI ModuleFindName(MODULEENTRY FAR* lpModule, LPCSTR lpstrName);
  229. HMODULE WINAPI ModuleFindHandle(MODULEENTRY FAR* lpModule, HMODULE hModule);
  230.  
  231. /****** Task list walking *****************************************************/
  232.  
  233. typedef struct tagTASKENTRY
  234. {
  235.     DWORD dwSize;
  236.     HTASK hTask;
  237.     HTASK hTaskParent;
  238.     HINSTANCE hInst;
  239.     HMODULE hModule;
  240.     WORD wSS;
  241.     WORD wSP;
  242.     WORD wStackTop;
  243.     WORD wStackMinimum;
  244.     WORD wStackBottom;
  245.     WORD wcEvents;
  246.     HGLOBAL hQueue;
  247.     char szModule[MAX_MODULE_NAME + 1];
  248.     WORD wPSPOffset;
  249.     HANDLE hNext;
  250. } TASKENTRY;
  251.  
  252. BOOL    WINAPI TaskFirst(TASKENTRY FAR* lpTask);
  253. BOOL    WINAPI TaskNext(TASKENTRY FAR* lpTask);
  254. BOOL    WINAPI TaskFindHandle(TASKENTRY FAR* lpTask, HTASK hTask);
  255. DWORD   WINAPI TaskSetCSIP(HTASK hTask, WORD wCS, WORD wIP);
  256. DWORD   WINAPI TaskGetCSIP(HTASK hTask);
  257. BOOL    WINAPI